package com.woyowodaows.utils;

import android.widget.EditText;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.NumberFormat;

/**
 * Created by Administrator on 2017/11/21.
 */

public class MathUtil {

    /**
     *  保留小数点后两位
     * @param bigDecimalDouble
     */
    public static  double  getTwoDecimalPoint(double bigDecimalDouble) {
        BigDecimal bigDecimal =  new BigDecimal(Double.toString(bigDecimalDouble));
        double  mDouble =  bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
        return mDouble;
    }

    /**
     *  保留小数点后两位
     * @param bigDecimalFloat
     */
    public static  float  getTwoDecimalPoint(float bigDecimalFloat) {
        BigDecimal bigDecimal =  new BigDecimal(Double.toString(bigDecimalFloat));
        float  mFloat =  bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();
        return mFloat;
    }

    /**
     *  保留小数点后两位
     * @param bigDecimalString
     */
    public static String getTwoDecimalPoint(String bigDecimalString) {
        BigDecimal bigDecimal =  new BigDecimal(bigDecimalString);
        float  mFloat =  bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();
        return mFloat + "";
    }

    /**
     *  保留小数点后一位
     * @param bigDecimalFloat
     */
    public static  float getOneDecimalPoint(float bigDecimalFloat) {
        BigDecimal bigDecimal =  new BigDecimal(Double.toString(bigDecimalFloat));
        float  mFloat =  bigDecimal.setScale(1, BigDecimal.ROUND_HALF_UP).floatValue();
        return mFloat;
    }


    //小数点后 补0
    public static String retainTwoPoint(double s){
        NumberFormat nf = new DecimalFormat("0.00");
        return nf.format(s);
    }



    //最多输入两位小数
    public static void inputSecondDecimal(CharSequence s, EditText et) {
        if (s.toString().contains(".")){
            if (s.length()-1-s.toString().indexOf(".")>2){
                s=s.toString().subSequence(0,s.toString().indexOf(".")+3);
                et.setText(s);
                et.setSelection(s.length());
            }
        }

        if(s.toString().trim().substring(0).equals(".")){
            s ="0"+s;
            et.setText(s);
            et.setSelection(2);
        }

        if(s.toString().startsWith("0")
                && s.toString().trim().length()>1){
            if(!s.toString().substring(1,2).equals(".")){
                et.setText(s.subSequence(0,1));
                et.setSelection(1);
                return;
            }
        }
    }




    /**
     * 分转元
     * 金额换算 ---> long 型金额转换成 String<br/>
     * @param money:long
     * @return money:string
     */
    public static String getAmount(long money) {
        BigDecimal a = new BigDecimal(money);
        BigDecimal b = new BigDecimal("100");
        return String.valueOf(a.divide(b).setScale(2));
    }

    /**
     * 元转分
     * 最小只能支持到分，比分还小则返回0
     * 金额换算--->String 金额转换成 long 型<br/>
     * @param money:string
     * @return money:long
     */
    public static long getAmount(String money) {
        if (money == null) {
            return 0;
        }
        try {
            BigDecimal bigAmount = new BigDecimal(money);
            BigDecimal bigFactor = new BigDecimal("100");
            BigDecimal bigResult = bigAmount.multiply(bigFactor).setScale(2);
            return bigResult.longValue();
        } catch (NumberFormatException e) {
            return 0;
        }
    }



}
